package com.ccys.cms.service.consultation;

import com.ccys.common.vo.ResponseResult;
import com.ccys.db.dto.consultation.*;
import com.ccys.db.entity.TblBooking;
import com.ccys.db.rely.service.BaseService;
import com.ccys.db.vo.consultation.*;
import com.github.pagehelper.PageInfo;

import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal;
import java.util.List;

/**
 * @program: WhiteCoat
 * @description: 问诊订单和列表接口
 * @author: ZhangJingCan
 * @create: 2023-12-27 15:16
 **/
public interface ConsultationOrderAndListService extends BaseService<TblBooking> {
    ResponseResult<PageInfo<ConsultationPageQueryVo>, BigDecimal> findConsultationBasePage(ConsultationPageQueryDto dto);

    ResponseResult<PageInfo<DoctorInfoConsultationListPageVo>, BigDecimal> findPageDoctorInfoConsultationList(DoctorInfoConsultationListPageDto dto);

    ResponseResult<List<ConsultationGraphQueryVo>, BigDecimal> findConsultationGraph(ConsultationGraphQueryDto dto);

    ResponseResult<List<ConsultationGroupMake>, Integer> findConsultationGroupList();

    ResponseResult updateConsultationHide(BookingDTO dto);

    ResponseResult deleteConsultation(BookingDTO dto);

    ResponseResult updateDel(BookingDTO dto);

    ResponseResult updateConsultationOrderMarkAsPacked(BookingDTO dto);

    ResponseResult updateConsultationOrderMarkAsCompleted(BookingDTO dto);

    ResponseResult updateConsultationOrderScheduleGrab(BookingGrabDto dto);

    ResponseResult updateConsultationOrderReScheduleGrab(BookingGrabDto dto);

    ResponseResult updateConsultationOrderCancelGrabDelivery(BookingGrabDto dto);

    ResponseResult updateConsultationOrderScheduleUparcelExpress(BookingUparcelDto dto);

    ResponseResult updateConsultationOrderCancelUparcelDelivery(BookingUparcelDto dto);

    ResponseResult updateConsultationOrderReScheduleUParcel(BookingUparcelDto dto);

    ResponseResult updateConsultationOrderScheduleUparcelStandard(BookingUparcelDto dto);

    ResponseResult updateConsultationOrderMarkAsDelivering(BookingDTO dto);

    ResponseResult updateConsultationListMarkAsPaid(BookingDTO dto);

    ResponseResult updateConsultationListUpdateProfile(BookingDTO dto);

    ResponseResult downloadMedicationCertificationPdf(HttpServletResponse response, String bookingId);

    ResponseResult<List<BookingGrabListVo>,Object> findGrabListByBookingId(BookingGrabDto dto);

    ResponseResult<List<BookingUparcelListVo>, Object> findUparcelListByBookingId(BookingUparcelDto dto);
}
